package com.wuxinwudai.android.beans;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * LRResult 泛型类用于返回数据列表
 * @author 吾心无待 于2016年06月02日
 */
public class LRResult<T> extends JsonRequestResult {
    private T[] items;
    /**
     * 获取返回的数据行
     * @return 返回数据行
     */
    public T[] getItems() {
        return items;
    }
    //设置数据项
    private void setItems(T[] items) {
        this.items = items;
    }
    //私有构造函数
    private LRResult() {}

    /**
     * 根据 http 响应字符串构造 LRResult
     * @param response 响应消息的 JSON 字符串文本
     * @return 返回 LRResult 对象
     * @throws JSONException
     */
    public static <T> LRResult<T> create(String response) throws JSONException {
        JSONObject obj = new JSONObject(response);
        return create(obj);
    }
    /**
     * 根据 JSONObject 对象构造 LRResult
     * @param obj JSONObject 对象
     * @return 返回 LRResult 对象
     * @throws JSONException
     */
    public static <T> LRResult<T> create(JSONObject obj) throws JSONException{
        boolean isOK = obj.getBoolean("ok");
        String msg = obj.getString("message");
        String statusCode = obj.getString("statusCode");
        long time = obj.getLong("time");
        LRResult<T> r = new LRResult<>();
        r.setOk(isOK);
        r.setStatusCode(statusCode);
        r.setMessage(msg);
        r.setTime(time);
        if (isOK){
            JSONArray jsonArray = obj.getJSONArray("items");
            int length = jsonArray.length();
            T[] items = r.getLRParser().newList();
            for(int i = 0;i< length ; i++){
                items[i] = r.getLRParser().itemFrom(jsonArray.getJSONObject(i));
            }
            r.setItems(items);
        }
        return r;
    }
    /**
     * 要求重写该方法，获取 LRParser
     * @return LRParser
     */
    public LRParser<T> getLRParser(){
        return null;
    }
}
